home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Open Transport / Sample Code / NetFractal™ / ES stuff□ / OutPoint.cpp < prev    next >
Encoding:
Text File  |  1996-11-19  |  1.0 KB  |  65 lines  |  [TEXT/MPCC]

  1. //    OutPoint.cpp
  2.  
  3.  
  4. #include "OutPoint.h"
  5.  
  6. #define TIMEOUT 2000
  7.  
  8.  
  9. OutPoint::OutPoint(
  10.     const char *protocol,
  11.     const char *address,
  12.     short port)
  13. {
  14.     OSErr err = Open(protocol);
  15.     DNSAddress inAddress;
  16.     InetAddress outAddress;
  17.     TBind inBind = { { 0, sizeof(short)+strlen(address)-1, (UInt8*) &inAddress }, 0};
  18.     TBind outBind = { { sizeof(InetAddress), 0, (UInt8*) &fHisAddress }, 0};
  19.  
  20.     if (err)
  21.         throw err;
  22.  
  23.     err = Bind(port);
  24.     if (err)
  25.         throw err;
  26.  
  27.     inAddress.fAddressType = kOTGenericName;
  28.     strcpy(inAddress.fName, address);
  29.  
  30.     err = OTResolveAddress(fEndpoint, &inBind, &outBind, TIMEOUT);
  31.     if (err)
  32.         throw err;
  33.     fHisAddressSize = outBind.addr.len;
  34. }
  35.  
  36.  
  37. OutPoint::~OutPoint()
  38. {
  39. }
  40.  
  41.  
  42. OSErr
  43. OutPoint::SendData(
  44.     const void *data,
  45.     long size)
  46. {
  47.  
  48.     OSStatus err;
  49.     
  50.     while (1) {
  51.         TUnitData uData = {
  52.             { 0, fHisAddressSize, (UInt8*) &fHisAddress },
  53.             { 0, 0, NULL },
  54.             { 0, (size_t) size, (UInt8*) data },
  55.         };
  56.     
  57.         err = OTSndUData(fEndpoint, &uData);
  58.         if (err != kOTLookErr)
  59.             break;
  60.         OTRcvUDErr(fEndpoint, nil);
  61.     }
  62.  
  63.     return (OSErr) err;
  64. }
  65.